#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
void* my_memcpy(void* arr2, void* arr1, size_t num);
void* my_memcpy(void* arr2, void* arr1, size_t num) {
	char* ret = arr2;
	assert(arr2 && arr1);
	while (num--)
	{
		*(char*)arr2 = *(char*)arr1;
		arr2 = (char*)arr2 + 1;
		arr1 = (char*)arr1 + 1;
	}
	return ret;
}
void* my_memmove(void* arr2, void* arr1, size_t num);
void* my_memmove(void* arr2, void* arr1, size_t num) {
	char* ret = arr2;
	assert(arr2 && arr1);
		if (arr2<arr1)
		{
			while (num--)
			{
				*(char*)arr2 = *(char*)arr1;
				arr2 = (char*)arr2 + 1;
				arr1 = (char*)arr1 + 1;
			}
		}
		else {
			while (num--)
			{
				*((char*)arr2+num) = *((char*)arr1+num);
			}
		}
	return ret;
}
int main() {
	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
	int arr2[20] = {0};
	//my_memcpy(arr2, arr1, 40);
	my_memmove(arr2, arr1, 20);
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		printf("%d  ", arr2[i]);
	}
	return 0;
}